前兩天我們先用CARTO(CartoDB)實作了一些基本的GIS資料視覺化,接觸了GIS資料。
延續 [Day3] 談互操作性及Web Map Service 標準議題,我們在處理資料時可能會遇到各種GIS格式,今日就來攻略幾種web常用的GIS資料格式。
根據教科書,所謂GIS資料就是具備空間資訊的資料,依照資料型態可以分成兩類
網格資料指的通常是影像類型等規則網格的資料,例如衛星影像、高程模型(用來表示地形),以像元(pixel)為基礎,每個pixel會有一些資訊如R,G,B, 或是深度、高度,等,賦予每一個pixel對應的空間坐標,就是一個網格式GIS資料,而賦予坐標的做法通常是定義網格大小、起始網格坐標、以及方向,定義這些資訊的檔案稱作 world file,常用的格式如geotiff、tiff、jpg、bmp等影像檔具有world file的影像資料都屬於此類。
比起網格式資料可能都是使用專業人員處理好的資料,向量式資料在應用上常見得多,又依表示方法分成:點、線、面(註)
註:點線面是統稱,在2D 又可細分為multi points, multi polygon...etc. 在3D GIS的世界,相關格式另有一片天....。
geojson我們在第二天的範例中就已經在地圖上介接了一個開放資料範例,而跟前幾天提到GIS常用的OGC標準不同,geojson非OGC標準,是由IETF(Internet Engineering Task Force)組織訂定的,因為是json物件的方式表現,使用起來可說是簡單好用,於D3.js與WebGIS都廣為流通,目前版本的geojson(RFC 7946)具有以下特徵:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [125.6, 10.1]
},
"properties": {
"name": "Dinagat Islands"
}
}
shapefile在GIS領域廣為使用多年,目前被廣泛使用中,它是GIS應用軟體供應商ESRI定義的格式,亦已部分公開相關結構,大多數GIS軟體(如QGIS、Arcgis等)也都支援。
要解析shapefile,可參考github上有許多shapefile library,而一個shapefile通常包含很多附屬檔案(wiki):
一個shapefile只會有一種幾何形態,共支援Point, Polyline, Polygon, 等13類的幾何型態資料,更多shape資料問題可參考wiki。
這邊要特別分享一個小小使用經驗:
shapefile因為具有(.prj)檔案記錄投影坐標系統的特性,與geojson(註:geojson也有定義CRS)有個不同的地方在於它可以使用不同的坐標系統(一般來說geojson都是使用ESPG4326,也就是wgs84經緯度),我們拿到一份shapefile可能會是各式各樣坐標系統,這些坐標值是存在shp內,當我們偶爾會拿到沒有prj檔的shapefile時,可能會遇到對於shp內坐標值到底是啥而一頭霧水的現象,這時便需要經驗判斷資料的坐標系統喔!(關於坐標系統,預計過兩天再來攻略^^)
kml是OGC規範格式,廣泛用於Google平台上,它是xml方式表達GIS資料,並且包含了其在Google Earth上的樣式資料,基本上都使用ESPG4326的經緯度坐標,範例如下(wiki)
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark>
<name>New York City</name>
<description>New York City</description>
<Point>
<coordinates>-74.006393,40.714172,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>
在我過去使用kml的經驗,Google Earth對於kml在樣式屬性上實在非常具有彈性,他甚至可以定義其在Google Earth上的Popup內容、視角、事件等等,個人覺得算是很單純但又很難掌握(ㄊㄠˇ 一ㄢˋ)的格式(樣式部分)
topojson是geojson的擴充,大致上是基於geojson但具資訊壓縮並考量位相關係的(topology)的資料格式(請參考topojson spec文件),廣泛用於webgis及d3.js資料視覺化(作者同時也是d3.js作者Mike Bostock),關於topojson詳細的規格可以直接參考文件,在這邊我們先快速來看看一個Taiwan.TopoJSON範例(因長度關係,請直接前往github上的範例)。
拿到資料後,我們把資料複製到json edirtor檢視:
從資料格式架構中可以看到,topojson相較於geojson多增加了幾個項目:bbox、transform、arcs
geojson、shapefile、kml在WebGIS中最常被用到,資料交換也常依賴這幾類格式,大多數WebGIS平台都支援這些資料形式,因此實務上一定會碰到這些格式及轉換,今天先介紹這些格式,明天預計來攻略這幾類的資料轉換(這應該才是最重要的^^)。